在 Docker 還沒誕生前,基本上我們都是用 bash script 來管理我們的作業系統環境,所以對系統工程師而言,怎麼寫 bash script 程式非常重要的。
install-node.sh 檔
#!/bin/bash
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc
nvm install 10.16.0
npm i yarn -g
start-api-server.sh
#!/bin/bash
cd /app/
yarn install
cd /app/packages/api-server
npm start
執行
sh install-node.sh
sh start-api-server.sh
到了 Docker 時代的來臨,你可以輕鬆的至 Docker Hub 挑選一個最接近你需求的 Image,然後過 FROM
語法繼承那個預設環境,再疊加上自己專案所需的邏輯,就可以快速的建立程式的執行環境了。
Dockerfile 檔
FROM node:10.16.0-slim AS builder
ENV NODE_ENV=production
WORKDIR /app
COPY . .
RUN npm i yarn -g
RUN yarn install
WORKDIR /app/packages/api-server
EXPOSE 3000
CMD npm start
然後再透過 build
指令,產生自己的 image 版本,直接用 run
指令跑起來就可以了。
docker build -f Dockerfile -t api-server:dev-20190912 $PWD
docker run -d -p 80:3000 api-server:dev-20190912
術業有專精,並不是每個人都這麼了解作業系統的底層細節,俗話說「不要重複造輪子」,直接站在別人的肩膀上吧。
一般是用shellscript來泛指這些指令稿,開頭第一行是:或#!
shellscript在跨平臺其實很痛苦,比如BSD/AIX用csh執行的移到linux最愛的bash就是會不一樣。所以通用的會取最小集合用/bin/sh撰寫。
Dockerfile RUN 內定也是/bin/sh,你也可以說它變成一種更制式的撰寫規則,便於管理和流通。
謝謝,我調一下排版。